software surface